#include <iostream>
#include <spdlog/spdlog.h>
#include <spdlog/sinks/stdout_color_sinks.h>
#include <spdlog/sinks/basic_file_sink.h>

// 注意spdlog需要链接两个库 -lspdlog -lfmt

int main()
{
    // 设置全局的刷新策略
    spdlog::flush_every(std::chrono::seconds(1));
    // 遇到debug以上等级的日志 立即刷新
    spdlog::flush_on(spdlog::level::level_enum::debug);
    // 设置全局的日志输出等级
    spdlog::set_level(spdlog::level::level_enum::debug);
    
    
    // 创建标准输出的同步日志器   ------- 这里是默认工厂
    auto logger = spdlog::stdout_color_mt("default-logger");
    // 设置日志输出格式
    logger->set_pattern("[%H:%M:%S][%t][%-8l] %v ");
    logger->trace("hello world {}", 1);
    logger->debug("hello world {}", 2);
    logger->info("hello world {}", 3);
    logger->warn("hello world {}", 4);
    logger->error("hello world {}", 5);
    logger->critical("hello world {}", 6);

    // 先输出日志再输出这一行
    std::cout<<"日志输出完毕"<<std::endl;    
    

    // // 创建磁盘存储的同步日志器 
    // auto logger = spdlog::basic_logger_mt("file-logger", "sync.log");
    // // 设置日志输出格式
    // logger->set_pattern("[%n][%H:%M:%S][%t][%-8l] %v ");
    // logger->trace("hello world {}", 1);
    // logger->debug("hello world {}", 2);
    // logger->info("hello world {}", 3);
    // logger->warn("hello world {}", 4);
    // logger->error("hello world {}", 5);
    // logger->critical("hello world {}", 6);


}